
declare interface IBrowserJudgement {
    (ua: string): boolean
}
export declare interface IIsMobile extends IBrowserJudgement { }
export declare interface IIsPC extends IBrowserJudgement { }
export declare interface IIsQQBrowser extends IBrowserJudgement { }

declare interface ITypeJudgement {
    (obj: any): boolean
}
export declare interface IIsPrimitive extends ITypeJudgement { }
export declare interface IIsEmptyObj extends ITypeJudgement { }

export declare interface IMerge {
    (target: object, ...args: object[]): object
}

export declare interface IGetType {
    (obj: any): string
}

interface IStringJudgement {
    (str: string): boolean
}
export declare interface IIsStrNumber extends IStringJudgement { }
export declare interface IIsString extends IStringJudgement { }

export declare interface IGetBrowserType {
    (ua: string): string
}

export declare interface ICreateBufferUrl {
    (buffer: ArrayBuffer, type: string): string
}
export declare interface IUtilsCore {
    merge: IMerge,

    getType: IGetType,
    getBrowserType: IGetBrowserType,

    isEmptyObj: IIsEmptyObj,
    isStrNumber: IIsStrNumber,
    isPrimitive: IIsPrimitive,

    isPC: IIsPC,
    isMobile: IIsMobile,
    isQQBrowser: IIsQQBrowser,

    getPerformance: (window: Window) => void,

    createBufferUrl: ICreateBufferUrl
}